module BKP_TOP(
   input                         GTM_RESET,
   input                         GTM_CLK155M52,
   input                         GTM_BKP_FP8K,

   input                         GMPI_CLK,
   input[7:0]                    GMPI_A,
   input[15:0]                   GMPI_WD,
   input                         GMPI_WE,
   input                         GMPI_CS,
   input[7:0]                    GMPI_RA,
   output[15:0]                  GMPI_RD_BKP,


   input                         TRSV_IN_Q0_RFCLK_P,
   input                         TRSV_IN_Q0_RFCLK_N,
   input                         TRSV_IN_Q1_RFCLK_P,
   input                         TRSV_IN_Q1_RFCLK_N,

   input                         TRSV_AFE_0_RXDATA_P,
   input                         TRSV_AFE_0_RXDATA_N,
   output                        TRSV_AFE_0_TXDATA_P,
   output                        TRSV_AFE_0_TXDATA_N,

   input                         TRSV_AFE_1_RXDATA_P,
   input                         TRSV_AFE_1_RXDATA_N,
   output                        TRSV_AFE_1_TXDATA_P,
   output                        TRSV_AFE_1_TXDATA_N,

   input                         TRSV_AFE_2_RXDATA_P,
   input                         TRSV_AFE_2_RXDATA_N,
   output                        TRSV_AFE_2_TXDATA_P,
   output                        TRSV_AFE_2_TXDATA_N,

   input                         TRSV_AFE_3_RXDATA_P,
   input                         TRSV_AFE_3_RXDATA_N,
   output                        TRSV_AFE_3_TXDATA_P,
   output                        TRSV_AFE_3_TXDATA_N,

   input                         TRSV_AFE_4_RXDATA_P,
   input                         TRSV_AFE_4_RXDATA_N,
   output                        TRSV_AFE_4_TXDATA_P,
   output                        TRSV_AFE_4_TXDATA_N,

   input                         TRSV_AFE_5_RXDATA_P,
   input                         TRSV_AFE_5_RXDATA_N,
   output                        TRSV_AFE_5_TXDATA_P,
   output                        TRSV_AFE_5_TXDATA_N,

   input                         TRSV_AFE_6_RXDATA_P,
   input                         TRSV_AFE_6_RXDATA_N,
   output                        TRSV_AFE_6_TXDATA_P,
   output                        TRSV_AFE_6_TXDATA_N,

   input                         TRSV_AFE_7_RXDATA_P,
   input                         TRSV_AFE_7_RXDATA_N,
   output                        TRSV_AFE_7_TXDATA_P,
   output                        TRSV_AFE_7_TXDATA_N,

   input                         BKP_IN_TXFP8K,
   input[15:0]                   BKP_IN_TXDATA_0,
   input[15:0]                   BKP_IN_TXDATA_1,
   input[15:0]                   BKP_IN_TXDATA_2,
   input[15:0]                   BKP_IN_TXDATA_3,

   output                        BKP_OUT_RXFP8K,
   output[15:0]                  BKP_OUT_RXDATA_0,
   output[15:0]                  BKP_OUT_RXDATA_1,
   output[15:0]                  BKP_OUT_RXDATA_2,
   output[15:0]                  BKP_OUT_RXDATA_3
   );

(* keep = "TRUE" *)wire          TRSV_0_RXCLK, TRSV_1_RXCLK, TRSV_2_RXCLK, TRSV_3_RXCLK, TRSV_4_RXCLK, TRSV_5_RXCLK, TRSV_6_RXCLK, TRSV_7_RXCLK;
(* keep = "TRUE" *)wire[15:0]    TRSV_0_RXDATA, TRSV_1_RXDATA, TRSV_2_RXDATA, TRSV_3_RXDATA, TRSV_4_RXDATA, TRSV_5_RXDATA, TRSV_6_RXDATA, TRSV_7_RXDATA;
(* keep = "TRUE" *)wire          TRSV_0_TXCLK, TRSV_1_TXCLK, TRSV_2_TXCLK, TRSV_3_TXCLK, TRSV_4_TXCLK, TRSV_5_TXCLK, TRSV_6_TXCLK, TRSV_7_TXCLK;
(* keep = "TRUE" *)wire[15:0]    TRSV_0_TXDATA, TRSV_1_TXDATA, TRSV_2_TXDATA, TRSV_3_TXDATA, TRSV_4_TXDATA, TRSV_5_TXDATA, TRSV_6_TXDATA, TRSV_7_TXDATA;

wire                             BKP_0_TXFP8K, BKP_1_TXFP8K, BKP_2_TXFP8K, BKP_3_TXFP8K, BKP_4_TXFP8K, BKP_5_TXFP8K, BKP_6_TXFP8K, BKP_7_TXFP8K;
wire[15:0]                       BKP_0_TXDATA, BKP_1_TXDATA, BKP_2_TXDATA, BKP_3_TXDATA, BKP_4_TXDATA, BKP_5_TXDATA, BKP_6_TXDATA, BKP_7_TXDATA;

(* keep = "TRUE" *)wire[2:0]     RXFRM_0_FMCNT8, RXFRM_1_FMCNT8, RXFRM_2_FMCNT8, RXFRM_3_FMCNT8, RXFRM_4_FMCNT8, RXFRM_5_FMCNT8, RXFRM_6_FMCNT8, RXFRM_7_FMCNT8;
(* keep = "TRUE" *)wire[8:0]     RXFRM_0_FMCNT270, RXFRM_1_FMCNT270, RXFRM_2_FMCNT270, RXFRM_3_FMCNT270, RXFRM_4_FMCNT270, RXFRM_5_FMCNT270, RXFRM_6_FMCNT270, RXFRM_7_FMCNT270;
(* keep = "TRUE" *)wire[3:0]     RXFRM_0_FMCNT9, RXFRM_1_FMCNT9, RXFRM_2_FMCNT9, RXFRM_3_FMCNT9, RXFRM_4_FMCNT9, RXFRM_5_FMCNT9, RXFRM_6_FMCNT9, RXFRM_7_FMCNT9;
(* keep = "TRUE" *)wire          RXFRM_0_FP8K, RXFRM_1_FP8K, RXFRM_2_FP8K, RXFRM_3_FP8K, RXFRM_4_FP8K, RXFRM_5_FP8K, RXFRM_6_FP8K, RXFRM_7_FP8K;
(* keep = "TRUE" *)wire[15:0]    RXFRM_0_DATA, RXFRM_1_DATA, RXFRM_2_DATA, RXFRM_3_DATA, RXFRM_4_DATA, RXFRM_5_DATA, RXFRM_6_DATA, RXFRM_7_DATA;

wire                             ALG_0_FP8K;
wire[15:0]                       ALG_0_RD_0, ALG_0_RD_1, ALG_0_RD_2, ALG_0_RD_3;


wire[15:0]                       MPI_HSI_RXCDRLOCK;
(* keep = "TRUE" *)wire                             MPI_GTXQ0_QPLLRESET, MPI_GTXQ1_QPLLRESET;
(* keep = "TRUE" *)wire                             MPI_GTXQ0_QPLLLOCK, MPI_GTXQ1_QPLLLOCK;
(* keep = "TRUE" *)wire                             MPI_GTXQ0_QPLLREFCLKLOST, MPI_GTXQ1_QPLLREFCLKLOST;

(* keep = "TRUE" *)wire[3:0]     MPI_GTXQ0_RESET, MPI_GTXQ1_RESET;
(* keep = "TRUE" *)wire[3:0]     MPI_GTXQ0_RX_RESET_DONE, MPI_GTXQ1_RX_RESET_DONE;
(* keep = "TRUE" *)wire[3:0]     MPI_GTXQ0_TX_RESET_DONE, MPI_GTXQ1_TX_RESET_DONE;

(* keep = "TRUE" *)wire[2:0]                        MPI_GTXQ0_LOOPBACK_0, MPI_GTXQ0_LOOPBACK_1, MPI_GTXQ0_LOOPBACK_2, MPI_GTXQ0_LOOPBACK_3;
(* keep = "TRUE" *)wire[2:0]                        MPI_GTXQ1_LOOPBACK_0, MPI_GTXQ1_LOOPBACK_1, MPI_GTXQ1_LOOPBACK_2, MPI_GTXQ1_LOOPBACK_3;


BKP_MPI                                   INST_BKP_MPI(
   .GTM_RESET                             ( GTM_RESET ),

   .GMPI_CLK                              ( GMPI_CLK ),
   .GMPI_A                                ( GMPI_A[7:0] ),
   .GMPI_WD                               ( GMPI_WD[15:0] ),
   .GMPI_WE                               ( GMPI_WE ),
   .GMPI_CS                               ( GMPI_CS ),
   .GMPI_RD_BKP                           ( GMPI_RD_BKP[15:0] ),

   .MPI_OUT_GTXQ0_QPLLRESET               ( MPI_GTXQ0_QPLLRESET ),
   .MPI_OUT_GTXQ1_QPLLRESET               ( MPI_GTXQ1_QPLLRESET ),
   .MPI_IN_GTXQ0_QPLLLOCK                 ( MPI_GTXQ0_QPLLLOCK ),
   .MPI_IN_GTXQ1_QPLLLOCK                 ( MPI_GTXQ1_QPLLLOCK ),
   .MPI_IN_GTXQ0_QPLLREFCLKLOST           ( MPI_GTXQ0_QPLLREFCLKLOST ),
   .MPI_IN_GTXQ1_QPLLREFCLKLOST           ( MPI_GTXQ1_QPLLREFCLKLOST ),

   .MPI_OUT_GTXQ0_RESET                   ( MPI_GTXQ0_RESET[3:0] ),
   .MPI_OUT_GTXQ1_RESET                   ( MPI_GTXQ1_RESET[3:0] ),
   .MPI_IN_GTXQ0_RX_RESET_DONE            ( MPI_GTXQ0_RX_RESET_DONE[3:0] ),
   .MPI_IN_GTXQ1_RX_RESET_DONE            ( MPI_GTXQ1_RX_RESET_DONE[3:0] ),
   .MPI_IN_GTXQ0_TX_RESET_DONE            ( MPI_GTXQ0_TX_RESET_DONE[3:0] ),
   .MPI_IN_GTXQ1_TX_RESET_DONE            ( MPI_GTXQ1_TX_RESET_DONE[3:0] ),


   .MPI_OUT_GTXQ0_LOOPBACK_0              ( MPI_GTXQ0_LOOPBACK_0[2:0] ),
   .MPI_OUT_GTXQ0_LOOPBACK_1              ( MPI_GTXQ0_LOOPBACK_1[2:0] ),
   .MPI_OUT_GTXQ0_LOOPBACK_2              ( MPI_GTXQ0_LOOPBACK_2[2:0] ),
   .MPI_OUT_GTXQ0_LOOPBACK_3              ( MPI_GTXQ0_LOOPBACK_3[2:0] ),
   .MPI_OUT_GTXQ1_LOOPBACK_0              ( MPI_GTXQ1_LOOPBACK_0[2:0] ),
   .MPI_OUT_GTXQ1_LOOPBACK_1              ( MPI_GTXQ1_LOOPBACK_1[2:0] ),
   .MPI_OUT_GTXQ1_LOOPBACK_2              ( MPI_GTXQ1_LOOPBACK_2[2:0] ),
   .MPI_OUT_GTXQ1_LOOPBACK_3              ( MPI_GTXQ1_LOOPBACK_3[2:0] )
    ) ;

BKP_TRANSCEIVER_4                         INST_QUAD_0_TRANSCEIVER(
   .GTM_BKP_RESET                         ( GTM_RESET ),
   .TRSV_IN_RFCLK_P                       ( TRSV_IN_Q0_RFCLK_P ),
   .TRSV_IN_RFCLK_N                       ( TRSV_IN_Q0_RFCLK_N ),
   .TRSV_IN_STARTUP_CLOCK                 ( GMPI_CLK ),

   .TRSV_AFE_0_RXDATA_P                   ( TRSV_AFE_0_RXDATA_P ),
   .TRSV_AFE_0_RXDATA_N                   ( TRSV_AFE_0_RXDATA_N ),
   .TRSV_AFE_0_TXDATA_P                   ( TRSV_AFE_0_TXDATA_P ),
   .TRSV_AFE_0_TXDATA_N                   ( TRSV_AFE_0_TXDATA_N ),
   .TRSV_0_OUT_RXCLK                      ( TRSV_0_RXCLK ),
   .TRSV_0_OUT_RXDATA                     ( TRSV_0_RXDATA[15:0] ),
   .TRSV_0_OUT_TXCLK                      ( TRSV_0_TXCLK ),
   .TRSV_0_IN_TXDATA                      ( TRSV_0_TXDATA[15:0] ),

   .TRSV_AFE_1_RXDATA_P                   ( TRSV_AFE_1_RXDATA_P ),
   .TRSV_AFE_1_RXDATA_N                   ( TRSV_AFE_1_RXDATA_N ),
   .TRSV_AFE_1_TXDATA_P                   ( TRSV_AFE_1_TXDATA_P ),
   .TRSV_AFE_1_TXDATA_N                   ( TRSV_AFE_1_TXDATA_N ),
   .TRSV_1_OUT_RXCLK                      ( TRSV_1_RXCLK ),
   .TRSV_1_OUT_RXDATA                     ( TRSV_1_RXDATA[15:0] ),
   .TRSV_1_OUT_TXCLK                      ( TRSV_1_TXCLK ),
   .TRSV_1_IN_TXDATA                      ( TRSV_1_TXDATA[15:0] ),

   .TRSV_AFE_2_RXDATA_P                   ( TRSV_AFE_2_RXDATA_P ),
   .TRSV_AFE_2_RXDATA_N                   ( TRSV_AFE_2_RXDATA_N ),
   .TRSV_AFE_2_TXDATA_P                   ( TRSV_AFE_2_TXDATA_P ),
   .TRSV_AFE_2_TXDATA_N                   ( TRSV_AFE_2_TXDATA_N ),
   .TRSV_2_OUT_RXCLK                      ( TRSV_2_RXCLK ),
   .TRSV_2_OUT_RXDATA                     ( TRSV_2_RXDATA[15:0] ),
   .TRSV_2_OUT_TXCLK                      ( TRSV_2_TXCLK ),
   .TRSV_2_IN_TXDATA                      ( TRSV_2_TXDATA[15:0] ),

   .TRSV_AFE_3_RXDATA_P                   ( TRSV_AFE_3_RXDATA_P ),
   .TRSV_AFE_3_RXDATA_N                   ( TRSV_AFE_3_RXDATA_N ),
   .TRSV_AFE_3_TXDATA_P                   ( TRSV_AFE_3_TXDATA_P ),
   .TRSV_AFE_3_TXDATA_N                   ( TRSV_AFE_3_TXDATA_N ),
   .TRSV_3_OUT_RXCLK                      ( TRSV_3_RXCLK ),
   .TRSV_3_OUT_RXDATA                     ( TRSV_3_RXDATA[15:0] ),
   .TRSV_3_OUT_TXCLK                      ( TRSV_3_TXCLK ),
   .TRSV_3_IN_TXDATA                      ( TRSV_3_TXDATA[15:0] ),


   // QPLL control
   .MPI_IN_QPLLRESET                      ( MPI_GTXQ0_QPLLRESET ),
   .MPI_OUT_QPLLLOCK                      ( MPI_GTXQ0_QPLLLOCK ),
   .MPI_OUT_QPLLREFCLKLOST                ( MPI_GTXQ0_QPLLREFCLKLOST ),
   // loopback control
   .MPI_IN_TRSV_0_LOOPBACK                ( MPI_GTXQ0_LOOPBACK_0[2:0] ),
   .MPI_IN_TRSV_1_LOOPBACK                ( MPI_GTXQ0_LOOPBACK_1[2:0] ),
   .MPI_IN_TRSV_2_LOOPBACK                ( MPI_GTXQ0_LOOPBACK_2[2:0] ),
   .MPI_IN_TRSV_3_LOOPBACK                ( MPI_GTXQ0_LOOPBACK_3[2:0] ),

   .MPI_IN_RESET                          ( MPI_GTXQ0_RESET ),
   .MPI_IN_RX_RESET_DONE                  ( MPI_GTXQ0_RX_RESET_DONE[3:0] ),
   .MPI_IN_TX_RESET_DONE                  ( MPI_GTXQ0_TX_RESET_DONE[3:0] ),

   .MPI_OUT_EYESCANERR                    (  ),
   .MPI_OUT_RXCDRLOCK                     (  )
   );


BKP_TRANSCEIVER_4                         INST_QUAD_1_TRANSCEIVER(
   .GTM_BKP_RESET                         ( GTM_RESET ),
   .TRSV_IN_RFCLK_P                       ( TRSV_IN_Q1_RFCLK_P ),
   .TRSV_IN_RFCLK_N                       ( TRSV_IN_Q1_RFCLK_N ),
   .TRSV_IN_STARTUP_CLOCK                 ( GMPI_CLK ),

   .TRSV_AFE_0_RXDATA_P                   ( TRSV_AFE_4_RXDATA_P ),
   .TRSV_AFE_0_RXDATA_N                   ( TRSV_AFE_4_RXDATA_N ),
   .TRSV_AFE_0_TXDATA_P                   ( TRSV_AFE_4_TXDATA_P ),
   .TRSV_AFE_0_TXDATA_N                   ( TRSV_AFE_4_TXDATA_N ),
   .TRSV_0_OUT_RXCLK                      ( TRSV_4_RXCLK ),
   .TRSV_0_OUT_RXDATA                     ( TRSV_4_RXDATA[15:0] ),
   .TRSV_0_OUT_TXCLK                      ( TRSV_4_TXCLK ),
   .TRSV_0_IN_TXDATA                      ( TRSV_4_TXDATA[15:0] ),

   .TRSV_AFE_1_RXDATA_P                   ( TRSV_AFE_5_RXDATA_P ),
   .TRSV_AFE_1_RXDATA_N                   ( TRSV_AFE_5_RXDATA_N ),
   .TRSV_AFE_1_TXDATA_P                   ( TRSV_AFE_5_TXDATA_P ),
   .TRSV_AFE_1_TXDATA_N                   ( TRSV_AFE_5_TXDATA_N ),
   .TRSV_1_OUT_RXCLK                      ( TRSV_5_RXCLK ),
   .TRSV_1_OUT_RXDATA                     ( TRSV_5_RXDATA[15:0] ),
   .TRSV_1_OUT_TXCLK                      ( TRSV_5_TXCLK ),
   .TRSV_1_IN_TXDATA                      ( TRSV_5_TXDATA[15:0] ),

   .TRSV_AFE_2_RXDATA_P                   ( TRSV_AFE_6_RXDATA_P ),
   .TRSV_AFE_2_RXDATA_N                   ( TRSV_AFE_6_RXDATA_N ),
   .TRSV_AFE_2_TXDATA_P                   ( TRSV_AFE_6_TXDATA_P ),
   .TRSV_AFE_2_TXDATA_N                   ( TRSV_AFE_6_TXDATA_N ),
   .TRSV_2_OUT_RXCLK                      ( TRSV_6_RXCLK ),
   .TRSV_2_OUT_RXDATA                     ( TRSV_6_RXDATA[15:0] ),
   .TRSV_2_OUT_TXCLK                      ( TRSV_6_TXCLK ),
   .TRSV_2_IN_TXDATA                      ( TRSV_6_TXDATA[15:0] ),

   .TRSV_AFE_3_RXDATA_P                   ( TRSV_AFE_7_RXDATA_P ),
   .TRSV_AFE_3_RXDATA_N                   ( TRSV_AFE_7_RXDATA_N ),
   .TRSV_AFE_3_TXDATA_P                   ( TRSV_AFE_7_TXDATA_P ),
   .TRSV_AFE_3_TXDATA_N                   ( TRSV_AFE_7_TXDATA_N ),
   .TRSV_3_OUT_RXCLK                      ( TRSV_7_RXCLK ),
   .TRSV_3_OUT_RXDATA                     ( TRSV_7_RXDATA[15:0] ),
   .TRSV_3_OUT_TXCLK                      ( TRSV_7_TXCLK ),
   .TRSV_3_IN_TXDATA                      ( TRSV_7_TXDATA[15:0] ),


   // QPLL control
   .MPI_IN_QPLLRESET                      ( MPI_GTXQ1_QPLLRESET ),
   .MPI_OUT_QPLLLOCK                      ( MPI_GTXQ1_QPLLLOCK ),
   .MPI_OUT_QPLLREFCLKLOST                ( MPI_GTXQ1_QPLLREFCLKLOST ),
   // loopback control
   .MPI_IN_TRSV_0_LOOPBACK                ( MPI_GTXQ1_LOOPBACK_0[2:0] ),
   .MPI_IN_TRSV_1_LOOPBACK                ( MPI_GTXQ1_LOOPBACK_1[2:0] ),
   .MPI_IN_TRSV_2_LOOPBACK                ( MPI_GTXQ1_LOOPBACK_2[2:0] ),
   .MPI_IN_TRSV_3_LOOPBACK                ( MPI_GTXQ1_LOOPBACK_3[2:0] ),

   .MPI_IN_RESET                          ( MPI_GTXQ1_RESET ),
   .MPI_IN_RX_RESET_DONE                  ( MPI_GTXQ1_RX_RESET_DONE[3:0] ),
   .MPI_IN_TX_RESET_DONE                  ( MPI_GTXQ1_TX_RESET_DONE[3:0] ),

   .MPI_OUT_EYESCANERR                    (  ),
   .MPI_OUT_RXCDRLOCK                     (  )
   );



// ******************             Tx Frame             ****************** //
BKP_TXFRM                                 INST_TXFRM_00(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),

   .TXFRM_IN_TXFP                         ( BKP_IN_TXFP8K ),
   .TXFRM_IN_TXDATA                       ( BKP_IN_TXDATA_0[15:0] ),

   .TRSV_IN_TXCLK                         ( TRSV_0_TXCLK ),
   .TRSV_OUT_TXDATA                       ( TRSV_0_TXDATA[15:0] )
   );
BKP_TXFRM                                 INST_TXFRM_01(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),

   .TXFRM_IN_TXFP                         ( BKP_IN_TXFP8K ),
   .TXFRM_IN_TXDATA                       ( BKP_IN_TXDATA_1[15:0] ),

   .TRSV_IN_TXCLK                         ( TRSV_1_TXCLK ),
   .TRSV_OUT_TXDATA                       ( TRSV_1_TXDATA[15:0] )
   );
BKP_TXFRM                                 INST_TXFRM_02(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),

   .TXFRM_IN_TXFP                         ( BKP_IN_TXFP8K ),
   .TXFRM_IN_TXDATA                       ( BKP_IN_TXDATA_2[15:0] ),

   .TRSV_IN_TXCLK                         ( TRSV_2_TXCLK ),
   .TRSV_OUT_TXDATA                       ( TRSV_2_TXDATA[15:0] )
   );
BKP_TXFRM                                 INST_TXFRM_03(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),

   .TXFRM_IN_TXFP                         ( BKP_IN_TXFP8K ),
   .TXFRM_IN_TXDATA                       ( BKP_IN_TXDATA_3[15:0] ),

   .TRSV_IN_TXCLK                         ( TRSV_3_TXCLK ),
   .TRSV_OUT_TXDATA                       ( TRSV_3_TXDATA[15:0] )
   );

BKP_TXFRM                                 INST_TXFRM_04(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),

   .TXFRM_IN_TXFP                         ( BKP_IN_TXFP8K ),
   .TXFRM_IN_TXDATA                       ( BKP_IN_TXDATA_0[15:0] ),

   .TRSV_IN_TXCLK                         ( TRSV_4_TXCLK ),
   .TRSV_OUT_TXDATA                       ( TRSV_4_TXDATA[15:0] )
   );
BKP_TXFRM                                 INST_TXFRM_05(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),

   .TXFRM_IN_TXFP                         ( BKP_IN_TXFP8K ),
   .TXFRM_IN_TXDATA                       ( BKP_IN_TXDATA_1[15:0] ),

   .TRSV_IN_TXCLK                         ( TRSV_5_TXCLK ),
   .TRSV_OUT_TXDATA                       ( TRSV_5_TXDATA[15:0] )
   );
BKP_TXFRM                                 INST_TXFRM_06(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),

   .TXFRM_IN_TXFP                         ( BKP_IN_TXFP8K ),
   .TXFRM_IN_TXDATA                       ( BKP_IN_TXDATA_2[15:0] ),

   .TRSV_IN_TXCLK                         ( TRSV_6_TXCLK ),
   .TRSV_OUT_TXDATA                       ( TRSV_6_TXDATA[15:0] )
   );
BKP_TXFRM                                 INST_TXFRM_07(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),

   .TXFRM_IN_TXFP                         ( BKP_IN_TXFP8K ),
   .TXFRM_IN_TXDATA                       ( BKP_IN_TXDATA_3[15:0] ),

   .TRSV_IN_TXCLK                         ( TRSV_7_TXCLK ),
   .TRSV_OUT_TXDATA                       ( TRSV_7_TXDATA[15:0] )
   );



// ******************             Rx Frame             ****************** //
BP_RXFRM                                  INST_RXFRM_00(
   .GTM_RESET                             ( GTM_RESET ),

   .TRSV_IN_CLK                           ( TRSV_0_RXCLK ),
   .TRSV_IN_DATA                          ( TRSV_0_RXDATA[15:0] ),

   .RXFRM_OUT_FMCNT8                      ( RXFRM_0_FMCNT8[2:0] ),
   .RXFRM_OUT_FMCNT270                    ( RXFRM_0_FMCNT270[8:0] ),
   .RXFRM_OUT_FMCNT9                      ( RXFRM_0_FMCNT9[3:0] ),
   .RXFRM_OUT_FP8K                        ( RXFRM_0_FP8K ),
   .RXFRM_OUT_DATA                        ( RXFRM_0_DATA[15:0] ),
   .MPI_OUT_FRAME_OOF                     (  ),
   .MPI_OUT_FRAME_B1ERR                   (  ),
   .MPI_OUT_FRAME_B1ERR_EN                (  )
   );
BP_RXFRM                                  INST_RXFRM_01(
   .GTM_RESET                             ( GTM_RESET ),

   .TRSV_IN_CLK                           ( TRSV_1_RXCLK ),
   .TRSV_IN_DATA                          ( TRSV_1_RXDATA[15:0] ),

   .RXFRM_OUT_FMCNT8                      ( RXFRM_1_FMCNT8[2:0] ),
   .RXFRM_OUT_FMCNT270                    ( RXFRM_1_FMCNT270[8:0] ),
   .RXFRM_OUT_FMCNT9                      ( RXFRM_1_FMCNT9[3:0] ),
   .RXFRM_OUT_FP8K                        ( RXFRM_1_FP8K ),
   .RXFRM_OUT_DATA                        ( RXFRM_1_DATA[15:0] ),
   .MPI_OUT_FRAME_OOF                     (  ),
   .MPI_OUT_FRAME_B1ERR                   (  ),
   .MPI_OUT_FRAME_B1ERR_EN                (  )
   );
BP_RXFRM                                  INST_RXFRM_02(
   .GTM_RESET                             ( GTM_RESET ),

   .TRSV_IN_CLK                           ( TRSV_2_RXCLK ),
   .TRSV_IN_DATA                          ( TRSV_2_RXDATA[15:0] ),

   .RXFRM_OUT_FMCNT8                      ( RXFRM_2_FMCNT8[2:0] ),
   .RXFRM_OUT_FMCNT270                    ( RXFRM_2_FMCNT270[8:0] ),
   .RXFRM_OUT_FMCNT9                      ( RXFRM_2_FMCNT9[3:0] ),
   .RXFRM_OUT_FP8K                        ( RXFRM_2_FP8K ),
   .RXFRM_OUT_DATA                        ( RXFRM_2_DATA[15:0] ),
   .MPI_OUT_FRAME_OOF                     (  ),
   .MPI_OUT_FRAME_B1ERR                   (  ),
   .MPI_OUT_FRAME_B1ERR_EN                (  )
   );
BP_RXFRM                                  INST_RXFRM_03(
   .GTM_RESET                             ( GTM_RESET ),

   .TRSV_IN_CLK                           ( TRSV_3_RXCLK ),
   .TRSV_IN_DATA                          ( TRSV_3_RXDATA[15:0] ),

   .RXFRM_OUT_FMCNT8                      ( RXFRM_3_FMCNT8[2:0] ),
   .RXFRM_OUT_FMCNT270                    ( RXFRM_3_FMCNT270[8:0] ),
   .RXFRM_OUT_FMCNT9                      ( RXFRM_3_FMCNT9[3:0] ),
   .RXFRM_OUT_FP8K                        ( RXFRM_3_FP8K ),
   .RXFRM_OUT_DATA                        ( RXFRM_3_DATA[15:0] ),
   .MPI_OUT_FRAME_OOF                     (  ),
   .MPI_OUT_FRAME_B1ERR                   (  ),
   .MPI_OUT_FRAME_B1ERR_EN                (  )
   );
BKP_RXALG_QUAD                            INST_RXALG_Q0(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),
   .GTM_BKP_FP8K                          ( GTM_BKP_FP8K ),

   .RXFRM_CLK_0                           ( TRSV_0_RXCLK ),
   .RXFRM_CLK_1                           ( TRSV_1_RXCLK ),
   .RXFRM_CLK_2                           ( TRSV_2_RXCLK ),
   .RXFRM_CLK_3                           ( TRSV_3_RXCLK ),

   .RXFRM_DATA_0                          ( RXFRM_0_DATA[15:0] ),
   .RXFRM_DATA_1                          ( RXFRM_1_DATA[15:0] ),
   .RXFRM_DATA_2                          ( RXFRM_2_DATA[15:0] ),
   .RXFRM_DATA_3                          ( RXFRM_3_DATA[15:0] ),

   .RXFRM_FP8K_0                          ( RXFRM_0_FP8K ),
   .RXFRM_FP8K_1                          ( RXFRM_1_FP8K ),
   .RXFRM_FP8K_2                          ( RXFRM_2_FP8K ),
   .RXFRM_FP8K_3                          ( RXFRM_3_FP8K ),

   .ALG_FP8K                              ( ALG_0_FP8K ),
   .ALG_RD_0                              ( ALG_0_RD_0[15:0] ),
   .ALG_RD_1                              ( ALG_0_RD_1[15:0] ),
   .ALG_RD_2                              ( ALG_0_RD_2[15:0] ),
   .ALG_RD_3                              ( ALG_0_RD_3[15:0] )
   );
  assign  BKP_OUT_RXFP8K              = ALG_0_FP8K;
  assign  BKP_OUT_RXDATA_0[15:0]      = ALG_0_RD_0[15:0];
  assign  BKP_OUT_RXDATA_1[15:0]      = ALG_0_RD_1[15:0];
  assign  BKP_OUT_RXDATA_2[15:0]      = ALG_0_RD_2[15:0];
  assign  BKP_OUT_RXDATA_3[15:0]      = ALG_0_RD_3[15:0];


BP_RXFRM                                  INST_RXFRM_04(
   .GTM_RESET                             ( GTM_RESET ),

   .TRSV_IN_CLK                           ( TRSV_4_RXCLK ),
   .TRSV_IN_DATA                          ( TRSV_4_RXDATA[15:0] ),

   .RXFRM_OUT_FMCNT8                      ( RXFRM_4_FMCNT8[2:0] ),
   .RXFRM_OUT_FMCNT270                    ( RXFRM_4_FMCNT270[8:0] ),
   .RXFRM_OUT_FMCNT9                      ( RXFRM_4_FMCNT9[3:0] ),
   .RXFRM_OUT_FP8K                        ( RXFRM_4_FP8K ),
   .RXFRM_OUT_DATA                        ( RXFRM_4_DATA[15:0] ),
   .MPI_OUT_FRAME_OOF                     (  ),
   .MPI_OUT_FRAME_B1ERR                   (  ),
   .MPI_OUT_FRAME_B1ERR_EN                (  )
   );
BP_RXFRM                                  INST_RXFRM_05(
   .GTM_RESET                             ( GTM_RESET ),

   .TRSV_IN_CLK                           ( TRSV_5_RXCLK ),
   .TRSV_IN_DATA                          ( TRSV_5_RXDATA[15:0] ),

   .RXFRM_OUT_FMCNT8                      ( RXFRM_5_FMCNT8[2:0] ),
   .RXFRM_OUT_FMCNT270                    ( RXFRM_5_FMCNT270[8:0] ),
   .RXFRM_OUT_FMCNT9                      ( RXFRM_5_FMCNT9[3:0] ),
   .RXFRM_OUT_FP8K                        ( RXFRM_5_FP8K ),
   .RXFRM_OUT_DATA                        ( RXFRM_5_DATA[15:0] ),
   .MPI_OUT_FRAME_OOF                     (  ),
   .MPI_OUT_FRAME_B1ERR                   (  ),
   .MPI_OUT_FRAME_B1ERR_EN                (  )
   );
BP_RXFRM                                  INST_RXFRM_06(
   .GTM_RESET                             ( GTM_RESET ),

   .TRSV_IN_CLK                           ( TRSV_6_RXCLK ),
   .TRSV_IN_DATA                          ( TRSV_6_RXDATA[15:0] ),

   .RXFRM_OUT_FMCNT8                      ( RXFRM_6_FMCNT8[2:0] ),
   .RXFRM_OUT_FMCNT270                    ( RXFRM_6_FMCNT270[8:0] ),
   .RXFRM_OUT_FMCNT9                      ( RXFRM_6_FMCNT9[3:0] ),
   .RXFRM_OUT_FP8K                        ( RXFRM_6_FP8K ),
   .RXFRM_OUT_DATA                        ( RXFRM_6_DATA[15:0] ),
   .MPI_OUT_FRAME_OOF                     (  ),
   .MPI_OUT_FRAME_B1ERR                   (  ),
   .MPI_OUT_FRAME_B1ERR_EN                (  )
   );
BP_RXFRM                                  INST_RXFRM_07(
   .GTM_RESET                             ( GTM_RESET ),

   .TRSV_IN_CLK                           ( TRSV_7_RXCLK ),
   .TRSV_IN_DATA                          ( TRSV_7_RXDATA[15:0] ),

   .RXFRM_OUT_FMCNT8                      ( RXFRM_7_FMCNT8[2:0] ),
   .RXFRM_OUT_FMCNT270                    ( RXFRM_7_FMCNT270[8:0] ),
   .RXFRM_OUT_FMCNT9                      ( RXFRM_7_FMCNT9[3:0] ),
   .RXFRM_OUT_FP8K                        ( RXFRM_7_FP8K ),
   .RXFRM_OUT_DATA                        ( RXFRM_7_DATA[15:0] ),
   .MPI_OUT_FRAME_OOF                     (  ),
   .MPI_OUT_FRAME_B1ERR                   (  ),
   .MPI_OUT_FRAME_B1ERR_EN                (  )
   );
BKP_RXALG_QUAD                            INST_RXALG_Q1(
   .GTM_RESET                             ( GTM_RESET ),
   .GTM_CLK155M52                         ( GTM_CLK155M52 ),
   .GTM_BKP_FP8K                          ( GTM_BKP_FP8K ),

   .RXFRM_CLK_0                           ( TRSV_4_RXCLK ),
   .RXFRM_CLK_1                           ( TRSV_5_RXCLK ),
   .RXFRM_CLK_2                           ( TRSV_6_RXCLK ),
   .RXFRM_CLK_3                           ( TRSV_7_RXCLK ),

   .RXFRM_DATA_0                          ( RXFRM_4_DATA[15:0] ),
   .RXFRM_DATA_1                          ( RXFRM_5_DATA[15:0] ),
   .RXFRM_DATA_2                          ( RXFRM_6_DATA[15:0] ),
   .RXFRM_DATA_3                          ( RXFRM_7_DATA[15:0] ),

   .RXFRM_FP8K_0                          ( RXFRM_4_FP8K ),
   .RXFRM_FP8K_1                          ( RXFRM_5_FP8K ),
   .RXFRM_FP8K_2                          ( RXFRM_6_FP8K ),
   .RXFRM_FP8K_3                          ( RXFRM_7_FP8K ),

   .ALG_FP8K                              (  ),
   .ALG_RD_0                              (  ),
   .ALG_RD_1                              (  ),
   .ALG_RD_2                              (  ),
   .ALG_RD_3                              (  )
   );

endmodule
